﻿Imports Negocio
Imports Entidad
Public Class frmAgenciaTransporte

    Dim servicio1 As New PedidoNegocio
    Dim servicio2 As New AgenciaNegocio
    Dim servicio3 As New SucursalNegocio

    Dim CIA As String = "01"
    Dim NRUC As String = ""
    Dim codATSD As String = ""

    Sub limpiar3()
        listarDestinosSucursal("")
        cboDep.SelectedValue = "0"
        chkProvincia.Checked = False
        codATSD = ""
    End Sub

    Sub listarDestinosSucursal(codSucursal As String)
        Dim ds As DataSet = servicio2.listarDestinosSucursal(codSucursal)

        dgvDestinos.DataSource = ds.Tables(0)

        If ds.Tables(0).Rows.Count > 0 Then
            dgvDestinos.Rows(0).Selected = False
        End If
    End Sub

    Sub registrarDestinosSucursal()
        If cboDep.SelectedValue.ToString = "0" Then
            mensaje("Elija un departamento.")
            Exit Sub
        End If
        If cboProv.SelectedValue.ToString = "0" Then
            mensaje("Elija una provincia.")
            Exit Sub
        End If
        If txtAgencia.Text = "" Then
            mensaje("Seleccione una sucursal.")
            Exit Sub
        End If
        If chkProvincia.Checked = True Then
            'Si esta marcado el check box de todos los distritos significa que inserta con todos los distritos
            servicio2.registrarDestinos(CInt(txtAgencia.Text.Trim), cboProv.SelectedValue.ToString, "")
        Else
            'no esta marcado significa que escogerá el distrito de destino
            If cboDis.SelectedValue.ToString = "0" Then
                mensaje("Elija un distrito.")
                Exit Sub
            End If
            servicio2.registrarDestinos(CInt(txtAgencia.Text.Trim), "", cboDis.SelectedValue.ToString)
        End If
        mensaje("Destinos registrados.")
        listarDestinosSucursal(txtAgencia.Text.Trim)
    End Sub

    Function validacionCabecera() As Boolean
        If txtFCodigo.Text = "" Then
            mensaje("Código de agencia no ingresado.")
            Return False
            Exit Function
        End If
        If txtFRazon.Text = "" Then
            mensaje("Razón social no ingresado.")
            Return False
            Exit Function
        End If
        If txtFRuc.Text = "" Then
            mensaje("N° de Ruc no ingresado.")
            Return False
            Exit Function
        End If
        Return True
    End Function

    Function validacionDetalle() As Boolean
        If txtDescripcion.Text = "" Then
            mensaje("Descripción de sucursal no ingresada.")
            Return False
            Exit Function
        End If
        If txtDireccion.Text = "" Then
            mensaje("Dirección de sucursal no ingresada.")
            Return False
            Exit Function
        End If
        If txtTelefono.Text = "" Then
            mensaje("N° de teléfono no ingresado.")
            Return False
            Exit Function
        End If
        If cboDistrito.SelectedValue.ToString = "0" Then
            mensaje("Seleccione un distrito.")
            Return False
            Exit Function
        End If
        If txtLatitud.Text = "" Then
            mensaje("Latitud no ingresada.")
            Return False
            Exit Function
        End If
        If txtLongitud.Text = "" Then
            mensaje("Longitud no ingresada.")
            Return False
            Exit Function
        End If
        Return True
    End Function

    Sub mensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub operacion(e As System.Windows.Forms.DataGridViewCellEventArgs)
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            txtAgencia.Text = dgvSucursal.Item("Column1", f).Value
            txtDescripcion.Text = dgvSucursal.Item("clmDescripcion", f).Value
            txtDireccion.Text = dgvSucursal.Item("Column2", f).Value
            txtReferencia.Text = dgvSucursal.Item("Column3", f).Value
            txtObservaciones.Text = dgvSucursal.Item("Column4", f).Value
            txtTelefono.Text = dgvSucursal.Item("Column5", f).Value
            Dim ubigeo As String = dgvSucursal.Item("Column6", f).Value
            cboDepartamento.SelectedValue = ubigeo.Substring(0, 2)
            cboProvincia.SelectedValue = ubigeo.Substring(0, 4)
            cboDistrito.SelectedValue = ubigeo
            txtLongitud.Text = dgvSucursal.Item("Column7", f).Value
            txtLatitud.Text = dgvSucursal.Item("Column8", f).Value
            If dgvSucursal.Item("Column9", f).Value = "1" Then
                chkActivo.Checked = True
            Else
                chkActivo.Checked = False
            End If

            listarDestinosSucursal(txtAgencia.Text)
        End If
    End Sub

    Function LoadAutoComplete() As AutoCompleteStringCollection
        Dim dt As DataTable = servicio2.obtenerTodoAgencias().Tables(0)

        Dim stringCol As New AutoCompleteStringCollection()

        For Each row As DataRow In dt.Rows
            stringCol.Add(Convert.ToString(row("AGE_Descripcion")))
        Next

        Return stringCol
    End Function

    Sub cargarRazonSocial()
        txtFRazon.AutoCompleteCustomSource = Me.LoadAutoComplete
        txtFRazon.AutoCompleteMode = AutoCompleteMode.Suggest
        txtFRazon.AutoCompleteSource = AutoCompleteSource.CustomSource
    End Sub

    Sub listarSucursales()
        dgvSucursal.Rows.Clear()
        Dim ds As DataSet = servicio2.obtenerSucursalesAgencia(txtFCodigo.Text.Trim, "")
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvSucursal.Rows.Add(i + 1, ds.Tables(0).Rows(i)("ATS_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("ATS_Codigo").ToString.Trim,
                                 ds.Tables(0).Rows(i)("ATS_Direccion").ToString.Trim, ds.Tables(0).Rows(i)("ATS_Referencia").ToString.Trim,
                                 ds.Tables(0).Rows(i)("ATS_Observacion").ToString.Trim, ds.Tables(0).Rows(i)("ATS_Telefono").ToString.Trim,
                                 ds.Tables(0).Rows(i)("DIS_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("ATS_Longitud").ToString.Trim,
                                 ds.Tables(0).Rows(i)("ATS_Latitud").ToString.Trim, ds.Tables(0).Rows(i)("ATS_Activo").ToString.Trim)
        Next

        If ds.Tables(0).Rows.Count > 0 Then
            dgvSucursal.Rows(0).Selected = False
        End If
        codATSD = ""
    End Sub

    Sub cargarDepartamentos(combo As ComboBox)
        Dim ds As DataSet = servicio1.listarDepartamentos()
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DEP_Codigo"
            .DisplayMember = "DEP_Descripcion"
        End With
    End Sub

    Sub cargarProvincias(codDepartamento As String, combo As ComboBox)
        Dim ds As DataSet = servicio1.listarProvinciaXDepartamento(codDepartamento)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "PRO_Codigo"
            .DisplayMember = "PRO_Descripcion"
        End With
    End Sub

    Sub cargarDistritos(combo As ComboBox, codProvincia As String)
        Dim ds As DataSet = servicio1.listarDistritosXProvincia(codProvincia)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DIS_Codigo"
            .DisplayMember = "DIS_Descripcion"
        End With
    End Sub

    Sub iniciar()
        cargarDepartamentos(cboDepartamento)
        cargarDepartamentos(cboDep)
        cargarRazonSocial()
    End Sub

    Private Sub frmAgenciaTransporte_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        txtFRuc.Text = ""
    End Sub

    Private Sub frmAgenciaTransporte_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        iniciar()
    End Sub

    Private Sub cboDepartamento_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboDepartamento.SelectedValueChanged
        cargarProvincias(cboDepartamento.SelectedValue.ToString, cboProvincia)
    End Sub

    Private Sub cboProvincia_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboProvincia.SelectedValueChanged
        cargarDistritos(cboDistrito, cboProvincia.SelectedValue.ToString)
    End Sub

    Sub operacionAgencia()
        If validacionCabecera() = True Then
            Dim agencia As New AgenciaTransporte(txtFCodigo.Text.Trim, txtFRazon.Text.Trim, txtFRuc.Text.Trim, IIf(chkFActivo.Checked, "1", "0"))

            Dim agenciaTS As New AgenciaTransporteSucursal(txtAgencia.Text, txtFCodigo.Text.Trim, txtDescripcion.Text.Trim, txtDireccion.Text.Trim, txtTelefono.Text,
                                                           txtLatitud.Text.Trim, txtLongitud.Text.Trim, cboDistrito.SelectedValue.ToString,
                                                           txtReferencia.Text.Trim, txtObservaciones.Text.Trim, IIf(chkActivo.Checked, "1", "0"))

            If servicio2.verificarExistenciaAgenciaTransporte(agencia.AGE_Codigo) = True Then
                'If servicio2.obtenerSucursalesAgencia(agencia.AGE_Codigo, "").Tables(0).Rows.Count > 0 Then
                'If servicio2.obtenerSucursalesAgencia(agencia.AGE_Codigo, "").Tables(0).Rows.Count > 1 Then

                If validacionDetalle() = True Then
                    servicio2.actualizarAgenciaTransporte(agencia)
                    'servicio2.registrarAgenciaTransporteSucursal(agenciaTS)
                    'Else

                    If servicio2.verificarExistenciaAgenciaTransporteSucursal(agenciaTS.AGE_Codigo, agenciaTS.ATS_Codigo) = True Then
                        servicio2.actualizarAgenciaTransporteSucursal(agenciaTS)
                    Else
                        servicio2.registrarAgenciaTransporteSucursal(agenciaTS)
                    End If
                    mensaje("Registro Completado.")
                    listarSucursales()
                End If

                'Else
                '    servicio2.actualizarAgenciaTransporte(agencia)
                '    mensaje("Registro Completado.")
                '    listarSucursales()
                'End If
            Else
                servicio2.registrarAgenciaTransporte(agencia)
                servicio2.registrarAgenciaTransporteSucursal(agenciaTS)
                mensaje("Registro Completado.")
                listarSucursales()
            End If
        End If
    End Sub

    Sub limpiar1()
        txtAgencia.Text = ""
        txtDescripcion.Text = ""
        txtDireccion.Text = ""
        txtReferencia.Text = ""
        txtObservaciones.Text = ""
        txtTelefono.Text = ""
        cboDepartamento.SelectedValue = 0
        txtLatitud.Text = ""
        txtLongitud.Text = ""
        chkActivo.Checked = False
        txtDescripcion.Focus()
        limpiar3()
    End Sub

    Sub limpiar2()
        limpiar3()
        limpiar1()
        dgvSucursal.Rows.Clear()
        codATSD = ""
        chkFActivo.Checked = False
        txtFCodigo.Text = ""
        txtFRazon.Text = ""
        txtFRuc.Text = ""
        txtFCodigo.Focus()
    End Sub

    Private Sub btnLimpiar1_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar1.Click
        limpiar2()
    End Sub

    Private Sub btnLimpiar2_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar2.Click
        limpiar1()
    End Sub

    Private Sub enfocar()
        SendKeys.Send("{ENTER}")
    End Sub

    Private Sub txtFCodigo_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtFCodigo.KeyDown
        Dim texto As String = txtFCodigo.Text.Trim
        If e.KeyValue = Keys.Enter Then
            If texto = "" Then
                limpiar2()
            Else
                Dim ds As DataSet = servicio1.obtenerAgenciaXID(texto)
                If ds.Tables(0).Rows.Count > 0 Then
                    txtFRazon.Text = ds.Tables(0).Rows(0)("AGE_Descripcion").ToString.Trim
                    txtFRuc.Text = ds.Tables(0).Rows(0)("AGE_Ruc").ToString.Trim
                    NRUC = ds.Tables(0).Rows(0)("AGE_Ruc").ToString.Trim
                    If ds.Tables(0).Rows(0)("AGE_Activo").ToString.Trim = "1" Then
                        chkFActivo.Checked = True
                    Else
                        chkActivo.Checked = False
                    End If
                    listarSucursales()
                End If
            End If
        ElseIf e.KeyValue = Keys.Add Then
            Dim ds As DataSet = servicio1.obtenerAgencias()
            Dim agencia As New frmAgencia(ds, 1)
            If agencia.ShowDialog() = Windows.Forms.DialogResult.OK Then
                enfocar()
                listarSucursales()
            End If
        End If
    End Sub

    Private Sub dgvSucursal_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvSucursal.CellClick
        operacion(e)
    End Sub

    Private Sub dgvSucursal_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvSucursal.CellDoubleClick
        operacion(e)
    End Sub

    Private Sub btnGrabar_Click(sender As System.Object, e As System.EventArgs) Handles btnGrabar.Click
        operacionAgencia()
    End Sub

    Private Sub dgvSucursal_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvSucursal.CellFormatting
        For i = 0 To dgvSucursal.Rows.Count - 1
            If dgvSucursal.Item("Column9", i).Value = "0" And e.RowIndex = i Then
                e.CellStyle.ForeColor = Color.Red
            End If
        Next
    End Sub

    Private Sub cboDep_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboDep.SelectedValueChanged
        cargarProvincias(cboDep.SelectedValue.ToString, cboProv)
    End Sub

    Private Sub cboProv_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboProv.SelectedValueChanged
        cargarDistritos(cboDis, cboProv.SelectedValue.ToString)
    End Sub

    Private Sub chkProvincia_CheckedChanged(sender As Object, e As System.EventArgs) Handles chkProvincia.CheckedChanged
        If chkProvincia.Checked Then
            cboDis.Enabled = False
        Else
            cboDis.Enabled = True
        End If
    End Sub

    Private Sub btnAgregar_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregar.Click
        registrarDestinosSucursal()
    End Sub

    Sub operacionDestinos(e As System.Windows.Forms.DataGridViewCellEventArgs)
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            codATSD = dgvDestinos.Item("Column10", f).Value
        End If
    End Sub

    Private Sub dgvDestinos_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDestinos.CellClick
        operacionDestinos(e)
    End Sub

    Private Sub dgvDestinos_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDestinos.CellDoubleClick
        operacionDestinos(e)
    End Sub

    Private Sub btnQuitar_Click(sender As System.Object, e As System.EventArgs) Handles btnQuitar.Click
        If codATSD = "" Then
            mensaje("Debe seleccionar un destino.")
            Exit Sub
        End If
        servicio2.eliminarDestinoSucursal(codATSD)
        mensaje("Destino eliminado.")
        listarDestinosSucursal(txtAgencia.Text.Trim)
    End Sub

    Private Sub txtFRuc_LostFocus(sender As Object, e As System.EventArgs) Handles txtFRuc.LostFocus
        If servicio2.verificarExistenciaRuc(txtFRuc.Text.Trim, NRUC) = True Then
            mensaje("Número de Ruc ya existe, ingrese otro.")
            txtFRuc.Text = ""
            txtFRuc.Focus()
        End If
    End Sub

End Class